//index.ts
import { createI18n } from 'vue-i18n'        //引入vue-i18n组件
import { localStorage } from "@/utils/local-storage";
import { STORAGE_LANG_KEY } from '@/stores/mutation-type'
//引入同级目录下文件
const modules = import.meta.globEager('./*')

//假设你还有其他目录下的语言文件 它的路径是 src/home/locales/en-US.ts
//那么你就可以 使用 :lower:（小写） :upper:（大写） 来引入文件
const viewModules = import.meta.globEager('../**/locales/[[:lower:]][[:lower:]]-[[:upper:]][[:upper:]].ts')

function getLangAll(): any{
  const message:any = {}
  getLangFiles(modules,message)
  getLangFiles(viewModules,message)
  return message
}
/**
 * 获取所有语言文件
 * @param {Object} mList
 */
function getLangFiles(mList:any,msg:any){
  for(const path in mList){
    if(mList[path].default){
      //  获取文件名
      const pathName = path.substr(path.lastIndexOf('/') + 1,5)
      
      if(msg[pathName]){
        msg[pathName] = {
          ...mList[pathName],
          ...mList[path].default
        }
      }else{
        msg[pathName] = mList[path].default
      }
      
    }
  }
}

  //注册i8n实例并引入语言文件
 const i18n = createI18n({
    // 是否支持compositionAPI
    legacy: false,
    // set locale
    locale: 'zh-CN', 
    messages: getLangAll(),
    // 全局注册$t
    // globalInjection: true,
  })
  // console.log("i18n begin =========== ",i18n.global.locale.value)
  i18n.global.locale.value = localStorage.get(STORAGE_LANG_KEY) || 'zh-CN'
  
  export default i18n; 